// 互斥锁是一种常用的控制共享资源访问的方法，它能够保证同时只有一个goroutine可以访问共享资源。Go语言中使用sync包的Mutex类型来实现互斥锁。
package main

import (
	"fmt"
	"sync"
)

var wgf sync.WaitGroup
var lock sync.Mutex
var x = 0

func add() {
	lock.Lock()
	x++
	lock.Unlock()
	wgf.Done()
}

func main() {
	wgf.Add(1000)
	for i := 0; i < 1000; i++ {
		go add()
	}
	wgf.Wait()
	fmt.Println(x)
}
